// ==UserScript==
// @name 宝可梦点击(Poke Clicker)辅助脚本 [额外设定] Script
// @namespace PokeClickerHelper
// @version 0.1.5
// @description 在 开始菜单 => 设置 => 新增了一些额外设定的功能可自行开启!
// @author 苍猫
// @match https://www.pokeclicker.com
// @match https://g8hh.github.io/pokeclicker/
// @match https://pokeclicker.g8hh.com
// @match https://yx.g8hh.com/pokeclicker/
// @icon data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/319hf99fYX/fX2F/319hf8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////////////////99fYX/fX2F/319hf8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////wAAAP8AAAD/fX2F/319hf99fYX/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAD/AAAA/wAAAP99fYX/fX2F/wAAAP8AAAD/AAAA/319hf8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/HBT//xwU//8AAAD//////319hf8AAAD/Dgim/w4Ipv8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAD/HBT//xwU//8cFP//HBT//wAAAP8AAAD/Dgim/w4Ipv8OCKb/Dgim/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAA/xwU//8cFP//HBT//xwU/44cFP//HBT//xwU//8cFP//Dgim/w4Ipv8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/HBT//xwU/47/////HBT/jhwU//8cFP//HBT//w4Ipv8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/xwU//8cFP//HBT/jhwU//8OCKb/Dgim/w4Ipv8OCKb/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/xwU//8OCKb/Dgim/w4Ipv8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAPw/AADwDwAA4AcAAOAHAADAAwAAwAMAAMADAADAAwAA4AcAAOAHAADwDwAA/D8AAP//AAD//wAA//8AAA==
// @grant none
// @license MIT
// @run-at document-end
// ==/UserScript==
/* global App, $, PokeClickerHelper, GameConstants, player, PokemonShops:true, Shop, ItemList, MapHelper, TownList, EvolutionStone, pokeLeagueShop*/
if (typeof PokeClickerHelper == typeof void 0) {
alert('宝可梦点击(Poke Clicker)辅助脚本 [额外设定] Script加载失败\n\n未找到核心模块,需要先安装核心模块才可正常使用\n\n论坛主页:https://bbs.tampermonkey.net.cn/forum.php?mod=viewthread&tid=3842')
window.open("https://bbs.tampermonkey.net.cn/forum.php?mod=viewthread&tid=3842")
return
}
const NotifierBak = Notifier.notify;
// UI相关
PokeClickerHelper.UIScript.push(`
|
|
|
|
宝可梦商店区域设置(售卖当前或全部区域物品 => 带有#符号的功能有效): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
`)
// 初始化后加载功能 客户端模式
JSON.parse(PokeClickerHelper.get('ClientStatus', 'false')) ? App.isUsingClient = true : App.isUsingClient = false
let fuc = () => {
// 初始化
ScriptSetting.initialize('ClientStatus', '#PokeClickerHelperClientStatus')//客户端模式
ScriptSetting.initialize('PokeShopStatus', '#PokeClickerHelperPokeShopStatus')//宝可梦商店
ScriptSetting.initialize('SettingRegionStatus', '#PokeClickerHelperSettingRegionStatus', 'select')//宝可梦商店区域设置
ScriptSetting.initialize('WharfStatus', '#PokeClickerHelperWharfStatus')//码头
ScriptSetting.initialize('HideWildPokemonStatus', '#PokeClickerHelperHideWildPokemonStatus')//隐藏道路宝可梦信息
ScriptSetting.initialize('BattleFrontierStatus', '#PokeClickerHelperBattleFrontierStatus')//自动对战开拓区
ScriptSetting.initialize('BattleFrontierQuitStatus', '#PokeClickerHelperBattleFrontierQuitStatus')//*对战开拓区(中途结算退出)
ScriptSetting.initialize('CloseNotifierStatus', '#PokeClickerHelperCloseNotifierStatus')//屏蔽所有通知
ScriptSetting.initialize('TradingCenterStatus', '#PokeClickerHelperTradingCenterStatus')//浆果大师和交易中心
ScriptSetting.initialize('DiscordPokemonStatus', '#PokeClickerHelperDiscordPokemonStatus')//便捷兑换Discord宝可梦
$('#PokeClickerHelperDeleteMissingNo').click(ScriptSetting.DeleteMissingNo)//删除非法的宝可梦
// 初始化商店数据
ConvenientStore.initialize()//宝可梦商店
TalentMarket.initialize()//人才市场
ScriptSetting.HighestRegion = player.highestRegion();//初始化记录玩家最高区域 用于生成最高区域商店总物品
ConvenientStore.getHeadOfficeItem()//首次获取最高区域的商店物品
TradingCenter.initialize()//浆果大师和交易中心
TradingCenter.getHeadOffice()//生成最高区域交易中心
// 初始化后加载功能
if (JSON.parse(PokeClickerHelper.get('PokeShopStatus', 'false'))) ConvenientStore.LoadFunction()//宝可梦商店
if (JSON.parse(PokeClickerHelper.get('WharfStatus', 'false'))) ScriptSetting.LoadWharf()//码头
if (JSON.parse(PokeClickerHelper.get('HideWildPokemonStatus', 'false'))) PokeClickerHelper.hookGameTickList.add(ScriptSetting.HideWildPokemon)//隐藏道路宝可梦信息
if (JSON.parse(PokeClickerHelper.get('BattleFrontierStatus', 'false'))) PokeClickerHelper.hookGameTickList.add(BattleFrontier.AutoBattle)//自动对战开拓区
if (JSON.parse(PokeClickerHelper.get('BattleFrontierQuitStatus', 'false'))) PokeClickerHelper.hookGameTickList.add(BattleFrontier.LoadQuit)//*对战开拓区(中途结算退出)
if (JSON.parse(PokeClickerHelper.get('CloseNotifierStatus', 'false'))) ScriptSetting.CloseNotifier('remove')//屏蔽所有通知
if (JSON.parse(PokeClickerHelper.get('TradingCenterStatus', 'false'))) ScriptSetting.LoadTradingCenter()//浆果大师和交易中心
if (JSON.parse(PokeClickerHelper.get('DiscordPokemonStatus', 'false'))) ScriptSetting.LoadDiscordPokemon()//便捷兑换Discord宝可梦
ScriptSetting.SettingRegionStatus = JSON.parse(PokeClickerHelper.get('SettingRegionStatus', '0'))//读取宝可梦商店区域设置
}
const listener = () => {
// 客户端模式 checkbox 监听
$('#PokeClickerHelperClientStatus').on('change', function () {
if (JSON.parse(PokeClickerHelper.get('ClientStatus', 'false'))) {
PokeClickerHelper.set('ClientStatus', 'false')
} else {
PokeClickerHelper.set('ClientStatus', 'true')
}
PokeClickerHelper.Notify({ title: '宝可梦点击(Poke Clicker)辅助脚本', message: "客户端模式设置成功,请重新刷新游戏!" });
})
// 宝可梦商店 checkbox 监听
$('#PokeClickerHelperPokeShopStatus').on('change', function () {
if (JSON.parse(PokeClickerHelper.get('PokeShopStatus', 'false'))) {
PokeClickerHelper.set('PokeShopStatus', 'false')
ConvenientStore.LoadFunction('remove')
} else {
PokeClickerHelper.set('PokeShopStatus', 'true')
ConvenientStore.LoadFunction()
}
})
// 浆果大师和交易中心 checkbox 监听
$('#PokeClickerHelperTradingCenterStatus').on('change', function () {
if (JSON.parse(PokeClickerHelper.get('TradingCenterStatus', 'false'))) {
PokeClickerHelper.set('TradingCenterStatus', 'false')
ScriptSetting.LoadTradingCenter('remove')
} else {
PokeClickerHelper.set('TradingCenterStatus', 'true')
ScriptSetting.LoadTradingCenter()
}
})
// 功能区域设置 select 监听
$('#PokeClickerHelperSettingRegionStatus').on('change', function () {
ScriptSetting.SettingRegionStatus = +this.value
PokeClickerHelper.set('SettingRegionStatus', ScriptSetting.SettingRegionStatus.toString())
})
// 人才市场 checkbox 监听
$('#PokeClickerHelperTalentMarketStatus').on('change', function () {
if (this.checked) {
TalentMarket.LoadFunction()
} else {
TalentMarket.LoadFunction('remove')
}
})
// 码头 checkbox 监听
$('#PokeClickerHelperWharfStatus').on('change', function () {
if (JSON.parse(PokeClickerHelper.get('WharfStatus', 'false'))) {
PokeClickerHelper.set('WharfStatus', 'false')
ScriptSetting.LoadWharf('remove')
} else {
PokeClickerHelper.set('WharfStatus', 'true')
ScriptSetting.LoadWharf()
}
})
// 隐藏道路宝可梦信息 checkbox 监听
$('#PokeClickerHelperHideWildPokemonStatus').on('change', function () {
if (JSON.parse(PokeClickerHelper.get('HideWildPokemonStatus', 'false'))) {
PokeClickerHelper.set('HideWildPokemonStatus', 'false')
PokeClickerHelper.hookGameTickList.delete(ScriptSetting.HideWildPokemon)
} else {
PokeClickerHelper.set('HideWildPokemonStatus', 'true')
PokeClickerHelper.hookGameTickList.add(ScriptSetting.HideWildPokemon)
}
})
// 屏蔽所有通知 checkbox 监听
$('#PokeClickerHelperCloseNotifierStatus').on('change', function () {
if (JSON.parse(PokeClickerHelper.get('CloseNotifierStatus', 'false'))) {
PokeClickerHelper.set('CloseNotifierStatus', 'false')
ScriptSetting.CloseNotifier('load')
} else {
PokeClickerHelper.set('CloseNotifierStatus', 'true')
ScriptSetting.CloseNotifier('remove')
}
})
// 便捷兑换Discord宝可梦 checkbox 监听
$('#PokeClickerHelperDiscordPokemonStatus').on('change', function () {
if (JSON.parse(PokeClickerHelper.get('DiscordPokemonStatus', 'false'))) {
PokeClickerHelper.set('DiscordPokemonStatus', 'false')
ScriptSetting.LoadDiscordPokemon('remove')
} else {
PokeClickerHelper.set('DiscordPokemonStatus', 'true')
ScriptSetting.LoadDiscordPokemon('load')
}
})
// 自动对战开拓区 checkbox 监听
$('#PokeClickerHelperBattleFrontierStatus').on('change', function () {
if (JSON.parse(PokeClickerHelper.get('BattleFrontierStatus', 'false'))) {
PokeClickerHelper.set('BattleFrontierStatus', 'false')
PokeClickerHelper.hookGameTickList.delete(BattleFrontier.AutoBattle)
// 移除自定义层数控件 和 自动挑战
if (App.game.gameState == GameConstants.GameState.battleFrontier) {
if (document.getElementById('PokeClickerHelperSetQuitStage') != null) $("#PokeClickerHelperSetQuitStage").parent().remove()
if (document.getElementById('PokeClickerHelperBattleFrontierRepeatStart') != null) $("#PokeClickerHelperBattleFrontierRepeatStart").remove()
}
} else {
PokeClickerHelper.set('BattleFrontierStatus', 'true')
PokeClickerHelper.hookGameTickList.add(BattleFrontier.AutoBattle)
}
})
// *对战开拓区(中途结算退出) checkbox 监听
$('#PokeClickerHelperBattleFrontierQuitStatus').on('change', function () {
if (JSON.parse(PokeClickerHelper.get('BattleFrontierQuitStatus', 'false'))) {
PokeClickerHelper.set('BattleFrontierQuitStatus', 'false')
PokeClickerHelper.hookGameTickList.delete(BattleFrontier.LoadQuit)
// 移除自定义层数控件
if (App.game.gameState == GameConstants.GameState.battleFrontier) {
if (document.getElementById('PokeClickerHelperSetQuitStage') != null) $("#PokeClickerHelperSetQuitStage").parent().remove()
}
} else {
PokeClickerHelper.set('BattleFrontierQuitStatus', 'true')
PokeClickerHelper.hookGameTickList.add(BattleFrontier.LoadQuit)
}
})
}
PokeClickerHelper.UIContainerID.push("#PokeClickerHelperWharf");
PokeClickerHelper.UIContainerID.push("#PokeClickerHelperPokemonShops");
PokeClickerHelper.UICustomFuc.push(fuc);
PokeClickerHelper.UIlistener.push(listener);
// 暴露对象方法到全局
const ScriptSetting = {}; //脚本设置变量
ScriptSetting.SettingRegionStatus = 0; //设置的区域状态
ScriptSetting.HighestRegion = -1; //玩家最高区域
const ConvenientStore = {}; //宝可梦超市变量
const BattleFrontier = {}; //对战开拓区变量
BattleFrontier.ReStartStatus = false; //自动挑战状态变量,用于判断是否自动挑战
const TalentMarket = {}; //人才市场变量
const TradingCenter = {}; //交易中心变量
PokeClickerHelper.BattleFrontier = BattleFrontier;
PokeClickerHelper.ConvenientStore = ConvenientStore;
PokeClickerHelper.ScriptSetting = ScriptSetting;
PokeClickerHelper.TalentMarket = TalentMarket;
PokeClickerHelper.TradingCenter = TradingCenter;
// 初始化的函数 用于初始化赋值 和 检查功能的状态 checked/select
ScriptSetting.initialize = (key, id, type = 'checked') => {
if (type == 'checked') {
// 初始化赋值
if (PokeClickerHelper.get(key, '') === '') PokeClickerHelper.set(key, 'false')
// 检查功能状态
JSON.parse(PokeClickerHelper.get(key, 'false')) ? $(id).prop('checked', true) : $(id).prop('checked', false)
} else if (type == 'select') {
// 初始化赋值
if (PokeClickerHelper.get(key, '') === '') PokeClickerHelper.set(key, '0')
// 检查功能状态
$(id).prop('value', JSON.parse(PokeClickerHelper.get(key, '0')))
}
}
// 加载码头功能 可空 默认加载 cmd = 'remove' 移除
ScriptSetting.LoadWharf = (cmd = 'load') => {
if (cmd == 'load') {
let text = ``
$('#townMap').append(text)
// 码头 button 监听 => 由于在html元素未append之前设置监听会导致监听无效,所以append后加入
document.getElementById('PokeClickerHelperWharf').addEventListener('click', MapHelper.openShipModal, false)
} else if (cmd = 'remove') {
document.getElementById('PokeClickerHelperWharf').removeEventListener('click', MapHelper.openShipModal, false)
$("#PokeClickerHelperWharf").remove()
}
}
// 加载兑换Discord宝可梦功能 可空 默认加载 cmd = 'remove' 移除
ScriptSetting.LoadDiscordPokemon = (cmd = 'load') => {
if (cmd == 'load') {
let text = ``
$('#saveTab .btn.btn-primary.btn-block').eq(0).before(text)
document.getElementById('PokeClickerHelperClaimDiscord').addEventListener('click', PokeClickerHelper.ScriptSetting.ClaimDiscord, false)
} else if (cmd = 'remove') {
$('#PokeClickerHelperClaimDiscord').remove()
}
}
// 隐藏道路宝可梦信息功能
ScriptSetting.HideWildPokemon = () => {
// 移除击败动画 暂时废除,开启后会导致道路击杀数不见
//if ($('knockout[data-bind*="App.game.statistics.routeKills"]').length > 0) $('knockout[data-bind*="App.game.statistics.routeKills"]')[0].remove()
// 移除宝可梦图片
if ($('img.enemy').length > 0) $('img.enemy').parent().remove()
// 移除宝可梦血条
if ($('.progress.hitpoints').length > 0) $('.progress.hitpoints')[0].remove()
// 移除宝可梦名字、性别
if ($('knockout[data-bind*="template: { name: \'pokemonNameTemplate\', data: { \'pokemon\': Battle.enemyPokemon() } }"]').length > 0) $('knockout[data-bind*="template: { name: \'pokemonNameTemplate\', data: { \'pokemon\': Battle.enemyPokemon() } }"]')[0].remove()
// 移除宝可梦捕获图标
if ($('knockout[data-bind*="caughtStatusTemplate"').length > 0) $('knockout[data-bind*="caughtStatusTemplate"')[0].remove()
// 移除宝可梦病毒图标
if ($('knockout[data-bind*="if: App.game.party.getPokemonByName(Battle.enemyPokemon().name)?.pokerus > GameConstants.Pokerus.Uninfected"]').length > 0) $('knockout[data-bind*="if: App.game.party.getPokemonByName(Battle.enemyPokemon().name)?.pokerus > GameConstants.Pokerus.Uninfected"]')[0].remove()
// 移除捕获动画
if ($('div .catchChance').length > 0) $('div .catchChance')[0].remove()
// 移除道馆的npc图
if ($('.trainer').length > 0) $('.trainer').remove()
}
// 屏蔽所有通知功能 可空 默认屏蔽通知 cmd = 'remove' 屏蔽 / cmd = 'load' 取消屏蔽
ScriptSetting.CloseNotifier = (cmd = 'remove') => {
if (cmd == 'remove') {
// if ($('#toaster').length > 0) $('#toaster').remove()
Notifier.notify = function (message) {
const sound = message.sound;
if (typeof sound != 'undefined') {
sound.play();
}
}
} else if (cmd == 'load') {
// if ($('#toaster').length == 0) $('#dynamic-background').after('')
Notifier.notify = NotifierBak;
}
}
// 一键兑换Discord宝可梦功能
ScriptSetting.ClaimDiscord = () => {
var codes = App.game.discord.codes.length;//获取可兑换宝可梦数量
if (App.game.discord.ID() == null) {
App.game.discord.ID(Math.floor((Math.random() * 65536) + 1));//生成Discord登录账号ID
for (let i = 0; i < codes; i++) {
document.getElementById("redeemable-code-input").value = App.game.discord.calcCode(App.game.discord.codes[i]);//自动填写兑换码
RedeemableCodeController.enterCode();//兑换
}
App.game.discord.logout();//退出登录
} else {
for (let i = 0; i < codes; i++) {
document.getElementById("redeemable-code-input").value = App.game.discord.calcCode(App.game.discord.codes[i]);
RedeemableCodeController.enterCode();
}
App.game.discord.logout();
}
}
// 加载宝可梦商店功能 可空 默认加载 cmd = 'remove' 移除
ScriptSetting.LoadTradingCenter = (cmd = 'load') => {
if (cmd == 'load') {
let text = `
|
`
$("#shortcutsBody tbody").append(text)
// 可梦商店 button 监听 => 由于在html元素未append之前设置监听会导致监听无效,所以append后加入
document.getElementById('PokeClickerHelperBerryMaster').addEventListener('click', PokeClickerHelper.TradingCenter.OpenBerryMaster, false)
document.getElementById('PokeClickerHelperShardTrader').addEventListener('click', PokeClickerHelper.TradingCenter.OpenTradingCenter, false)
} else if (cmd = 'remove') {
document.getElementById('PokeClickerHelperBerryMaster').removeEventListener('click', PokeClickerHelper.TradingCenter.OpenBerryMaster, false)
document.getElementById('PokeClickerHelperShardTrader').removeEventListener('click', PokeClickerHelper.TradingCenter.OpenTradingCenter, false)
$("#PokeClickerHelperBerryMaster").parent().parent().remove()
}
}
// 删除非法的宝可梦
ScriptSetting.DeleteMissingNo = () => {
var PlayercaughtPokemon = App.game.party.caughtPokemon;
var DeletePM_ID = new Array;
for (let i = 0; i < PlayercaughtPokemon.length; i++) {
if (PlayercaughtPokemon[i].id == 0) {
DeletePM_ID[DeletePM_ID.length] = i;
}
}
if (DeletePM_ID.length > 0) {
for (let i = 0; i < DeletePM_ID.length; i++) {
PlayercaughtPokemon.splice(DeletePM_ID[i] - i, 1);
}
Save.store();
location.reload();
} else {
Notifier.notify({
message: `不存在MissingNo的宝可梦!`,
type: NotificationConstants.NotificationOption.danger
});
}
}
// 自动对战开拓区功能
BattleFrontier.AutoBattle = () => {
// 秒杀过层
if (BattleFrontierRunner.started()) {
// 计算无属性克制的伤害>宝可梦的血量 直接跳过该层 否者 计算属性克制后的伤害>宝可梦的血量 跳过该宝可梦
if (App.game.party.calculatePokemonAttack(Battle.enemyPokemon().None, Battle.enemyPokemon().None, true) > PokemonFactory.routeHealth(BattleFrontierRunner.stage() + 10, GameConstants.Region.none)) {
BattleFrontierRunner.nextStage();
} else if (App.game.party.calculatePokemonAttack(Battle.enemyPokemon().type1, Battle.enemyPokemon().type2, true) > PokemonFactory.routeHealth(BattleFrontierRunner.stage() + 10, GameConstants.Region.none)) {
BattleFrontierBattle.defeatPokemon();
}
}
// 创建 自动挑战 标签
if (App.game.gameState == GameConstants.GameState.battleFrontier && document.getElementById('PokeClickerHelperBattleFrontierRepeatStart') == null) {
const RepeatStartText = `自动挑战 [OFF]`
$('#battleFrontierInformation .card-header').eq(0).after(RepeatStartText)
BattleFrontier.ReStartStatus = false; //初始化自动挑战状态
document.getElementById('PokeClickerHelperBattleFrontierRepeatStart').addEventListener('click', () => {
PCH.BattleFrontier.ReStartStatus ? PCH.BattleFrontier.ReStartStatus = false : PCH.BattleFrontier.ReStartStatus = true
PCH.BattleFrontier.ReStartStatus ? $('#PokeClickerHelperBattleFrontierRepeatStart').text('自动挑战 [ON]') : $('#PokeClickerHelperBattleFrontierRepeatStart').text('自动挑战 [OFF]')
PCH.BattleFrontier.ReStartStatus ? $('#PokeClickerHelperBattleFrontierRepeatStart')[0].classList.replace('btn-danger', 'btn-success') : $('#PokeClickerHelperBattleFrontierRepeatStart')[0].classList.replace('btn-success', 'btn-danger')
PCH.BattleFrontier.ReStartStatus ? PokeClickerHelper.hookGameTickList.add(PCH.BattleFrontier.ReStart) : PokeClickerHelper.hookGameTickList.delete(PCH.BattleFrontier.ReStart)
}, false)
}
}
// 自动对战开拓区功能 自动挑战 如果开启*对战开拓区(中途结算退出)可根据设定的自定义层数退出重新挑战
BattleFrontier.ReStart = () => {
if (PCH.BattleFrontier.ReStartStatus) {
if (!BattleFrontierRunner.started() && BattleFrontierRunner.hasCheckpoint()) return BattleFrontierRunner.start(true)//有些判断是否有历史挑战
if (!BattleFrontierRunner.started()) return BattleFrontierRunner.start(false)//无历史挑战从新开始挑战
//获取 设置的循环层数
let stage = +PokeClickerHelper.get('SetQuitStage', '0')
if (BattleFrontierRunner.stage() > stage && stage != 0 && BattleFrontierRunner.started() && JSON.parse(PokeClickerHelper.get('BattleFrontierQuitStatus', 'false'))) return BattleFrontierRunner.battleLost()
}
}
// 加载*对战开拓区(中途结算退出)功能 ==> 开始战斗后新增 结算退出按钮
BattleFrontier.LoadQuit = () => {
// 创建 结算退出 按钮
if (BattleFrontierRunner.started() && document.getElementById('PokeClickerHelperQuitBattleFrontier') == null) {
const QuitText = `结算退出`
$('#battleFrontierInformation .card-body').append(QuitText)
document.getElementById('PokeClickerHelperQuitBattleFrontier').addEventListener('click', PokeClickerHelper.BattleFrontier.battleLost, false)
}
// 创建 自定义层数 输入框
if (JSON.parse(PokeClickerHelper.get('BattleFrontierStatus', 'false')) && document.getElementById('PokeClickerHelperSetQuitStage') == null && App.game.gameState == GameConstants.GameState.battleFrontier) {
const text = `
`
$('#battleFrontierInformation .card-header').after(text)
$('#PokeClickerHelperSetQuitStage').on('change', event => {
let SetQuitStage = +event.target.value.replace(/[A-Za-z!@#$%^&*()]/g, '').replace(/[,]/g, "");
!isNaN(SetQuitStage) ? PokeClickerHelper.set('SetQuitStage', SetQuitStage) : PokeClickerHelper.set('SetQuitStage', SetQuitStage = 0)
event.target.value = SetQuitStage.toLocaleString('en-US');
});
$('#PokeClickerHelperSetQuitStage')[0].value = PokeClickerHelper.get('SetQuitStage', '0')
$('#PokeClickerHelperSetQuitStage').change()
}
if (!JSON.parse(PokeClickerHelper.get('BattleFrontierStatus', 'false')) && document.getElementById('PokeClickerHelperSetQuitStage') != null && App.game.gameState == GameConstants.GameState.battleFrontier) {
$("#PokeClickerHelperSetQuitStage").parent().remove()
}
}
// 结算退出方法
BattleFrontier.battleLost = () => {
BattleFrontierRunner.battleLost();
}
// 加载宝可梦商店功能 可空 默认加载 cmd = 'remove' 移除
ConvenientStore.LoadFunction = (cmd = 'load') => {
if (cmd == 'load') {
let text = ` |
`
$("#shortcutsBody tbody").append(text)
// 可梦商店 button 监听 => 由于在html元素未append之前设置监听会导致监听无效,所以append后加入
document.getElementById('PokeClickerHelperPokemonShops').addEventListener('click', PokeClickerHelper.ConvenientStore.OpenShops, false)
} else if (cmd = 'remove') {
document.getElementById('PokeClickerHelperPokemonShops').removeEventListener('click', PokeClickerHelper.ConvenientStore.OpenShops, false)
$("#PokeClickerHelperPokemonShops").parent().parent().remove()
}
}
// 初始化商店物品数据
ConvenientStore.initialize = () => {
ConvenientStore.PokeShopItem = new Array;//商店物品 存放该地区 蛋物品、宝可梦物品、进化物品、联盟物品
ConvenientStore.PokemonItem = new Array;//宝可梦物品数据 一维数组
ConvenientStore.EvolutionStone = new Array;//进化物品数据 一维数组
ConvenientStore.PokeLeagueItem = new Array;//联盟物品数据
ConvenientStore.EggsItem = new Array;//蛋物品数据
Object.keys(GameConstants.Region).filter(stone => isNaN(stone) && stone !== 'none').forEach(RegionNmae => {
ConvenientStore.EvolutionStone[GameConstants.Region[RegionNmae]] = new Array; //进化物品数据 二维数组
ConvenientStore.PokemonItem[GameConstants.Region[RegionNmae]] = new Array;//宝可梦物品数据 二维数组 后面调用
//遍历 进化道具 存储变量 ConvenientStore.EvolutionStone[地区编号]
Object.values(TownList).filter(t => t.region === GameConstants.Region[RegionNmae] && t.constructor.name === 'Town').forEach(p => {
for (let i = 0; i < p.content.length; i++) {
if (p.content[i] instanceof Shop) {
for (let j = 0; j < p.content[i].items.length; j++) {
if (p.content[i].items[j] instanceof EvolutionStone) ConvenientStore.EvolutionStone[GameConstants.Region[RegionNmae]].push(p.content[i].items[j])
}
}
}
})
})
//遍历 蛋 存储变量 ConvenientStore.PokeEggsItem
Object.values(ItemList).filter(({ name }) => name.includes('egg') && name != 'Lucky_egg' && name != 'Pokemon_egg').forEach(egg => {
ConvenientStore.EggsItem.push(egg)
})
//遍历 宝可梦 存储变量 ConvenientStore.PokemonItem[地区编号] ==> 1.5 移除条件 town.constructor.name == 'Town'
Object.values(TownList).filter(town => town.content.length > 0).forEach(city => {
city.content.filter(p => p.constructor.name == 'Shop').forEach(shop => {
for (let i = 0; i < shop.items.length; i++) {
if (shop.items[i].constructor.name == 'PokemonItem') ConvenientStore.PokemonItem[city.region].push(shop.items[i])
}
})
})
//遍历 联盟商店 存储变量 ConvenientStore.PokeLeagueItem
for (let i = 0; i < pokeLeagueShop().items.length; i++) {
ConvenientStore.PokeLeagueItem.push(pokeLeagueShop().items[i])
}
//地区区域物品拼接 存储变量 ConvenientStore.PokeShopItem
Object.keys(GameConstants.Region).filter(stone => isNaN(stone) && stone !== 'none').forEach(RegionNmae => {
ConvenientStore.PokeShopItem[GameConstants.Region[RegionNmae]] = ConvenientStore.EggsItem.concat(ConvenientStore.PokemonItem[GameConstants.Region[RegionNmae]], ConvenientStore.EvolutionStone[GameConstants.Region[RegionNmae]], ConvenientStore.PokeLeagueItem)
})
}
// 获取最高地区的商店总物品 存储变量 ConvenientStore.HeadOffice
ConvenientStore.getHeadOfficeItem = () => {
ConvenientStore.HeadOffice = new Array;
//拷贝蛋物品数据
ConvenientStore.HeadOffice = ConvenientStore.HeadOffice.concat(ConvenientStore.EggsItem)
//拷贝宝可梦物品数据
for (let i = 0; i < ScriptSetting.HighestRegion; i++) {
ConvenientStore.HeadOffice = ConvenientStore.HeadOffice.concat(ConvenientStore.PokemonItem[i])
}
//拷贝进化物品数据 => 去重
for (let i = 0; i < ScriptSetting.HighestRegion; i++) {
for (item1 of ConvenientStore.EvolutionStone[i]) {
let flag = true;
for (item2 of ConvenientStore.HeadOffice) {
if (item1.name == item2.name) flag = false
}
if (flag) { ConvenientStore.HeadOffice.push(item1) }
}
}
//拷贝联盟物品数据
ConvenientStore.HeadOffice = ConvenientStore.HeadOffice.concat(ConvenientStore.PokeLeagueItem)
}
// 打开商店方法 根据玩家所在区域进行读取商店物品数据
ConvenientStore.OpenShops = () => {
if (ScriptSetting.SettingRegionStatus == 0) {
PokemonShops = new Shop(ConvenientStore.PokeShopItem[player.region], GameConstants.camelCaseToString(GameConstants.Region[player.region]) + '(⁎˃ᴗ˂⁎)宝可梦商店');
} else if (ScriptSetting.SettingRegionStatus == 1) {
if (player.highestRegion() == ScriptSetting.HighestRegion) {
PokemonShops = new Shop(ConvenientStore.HeadOffice, '宝可梦商店(⁎˃ᴗ˂⁎)总店');
} else {
ScriptSetting.HighestRegion = player.highestRegion();
ConvenientStore.getHeadOfficeItem();
PokemonShops = new Shop(ConvenientStore.HeadOffice, '宝可梦商店(⁎˃ᴗ˂⁎)总店');
}
}
PokemonShops.protectedOnclick();
}
// 初始化人才市场数据
TalentMarket.initialize = () => {
TalentMarket.TalentsShop = new Array;
Object.keys(ItemList).filter(name => name.includes('FarmHand') || name.includes('HatcheryHelper')).forEach(p => { TalentMarket.TalentsShop.push(ItemList[p]) })
}
// 加载人才市场功能 可空 默认加载 cmd = 'remove' 移除
TalentMarket.LoadFunction = (cmd = 'load') => {
if (cmd == 'load') {
let text = ` |
`
$("#shortcutsBody tbody").append(text)
// 可梦商店 button 监听 => 由于在html元素未append之前设置监听会导致监听无效,所以append后加入
document.getElementById('PokeClickerHelperTalentMarket').addEventListener('click', PokeClickerHelper.TalentMarket.OpenShops, false)
} else if (cmd = 'remove') {
document.getElementById('PokeClickerHelperTalentMarket').removeEventListener('click', PokeClickerHelper.TalentMarket.OpenShops, false)
$("#PokeClickerHelperTalentMarket").parent().parent().remove()
}
}
// 打开商店方法
TalentMarket.OpenShops = () => {
TalentsShop = new Shop(TalentMarket.TalentsShop, '世界顶尖(⁎˃ᴗ˂⁎)招聘市场');
TalentsShop.protectedOnclick();
}
// 初始化交易中心数据
TradingCenter.initialize = () => {
//初始化浆果大师
BerryDeal.list[1000] = ko.observableArray();
for (let i = 0; i < Object.keys(BerryDeal.list).length - 1; i++) {
for (let j = 0; j < BerryDeal.list[i]().length; j++) {
BerryDeal.list[1000]().push(BerryDeal.list[i]()[j])
}
}
TradingCenter.BerryMasterShop = new BerryMasterShop(1000, Object.values(ItemList).filter(item => item.constructor.name == 'MulchShovelItem' || item.constructor.name == 'MulchItem' || item.constructor.name == 'ShovelItem'));
//初始化交易中心
TradingCenter.TradingCenterShop = new Array;
Object.keys(GameConstants.Region).filter(stone => isNaN(stone) && stone !== 'none').forEach(RegionNmae => {
ShardDeal.list[1000 + GameConstants.Region[RegionNmae]] = ko.observableArray();
TradingCenter.TradingCenterShop[GameConstants.Region[RegionNmae]] = new Array;
})
Object.values(TownList).filter(town => town.constructor.name == 'Town' && town.content.length > 0).forEach(city => {
for (let i = 0; i < city.content.length; i++) {
if (city.content[i].constructor.name == 'ShardTraderShop') {
for (let j = 0; j < ShardDeal.list[city.content[i].location]().length; j++) {
ShardDeal.list[1000 + city.region]().push(ShardDeal.list[city.content[i].location]()[j])
}
}
}
})
Object.keys(GameConstants.Region).filter(stone => isNaN(stone) && stone !== 'none').forEach(RegionNmae => {
TradingCenter.TradingCenterShop[GameConstants.Region[RegionNmae]] = new ShardTraderShop(1000 + GameConstants.Region[RegionNmae], '地区(⁎˃ᴗ˂⁎)交易中心')
})
}
// 获取最高区域交易中心数据
TradingCenter.getHeadOffice = () => {
ShardDeal.list[999] = ko.observableArray();
Object.values(TownList).filter(town => town.constructor.name == 'Town' && town.content.length > 0).forEach(city => {
if (city.region <= ScriptSetting.HighestRegion) {
for (let i = 0; i < city.content.length; i++) {
if (city.content[i].constructor.name == 'ShardTraderShop') {
for (let j = 0; j < ShardDeal.list[city.content[i].location]().length; j++) {
ShardDeal.list[999]().push(ShardDeal.list[city.content[i].location]()[j])
}
}
}
}
})
TradingCenter.HeadOfficeShop = new ShardTraderShop(999, '世界(⁎˃ᴗ˂⁎)交易中心')
}
// 打开商店 浆果大师
TradingCenter.OpenBerryMaster = () => {
TradingCenter.BerryMasterShop.protectedOnclick();
}
// 打开商店 交易中心
TradingCenter.OpenTradingCenter = () => {
if (ScriptSetting.SettingRegionStatus == 0) {
TradingCenter.TradingCenterShop[player.region].protectedOnclick()
} else if (ScriptSetting.SettingRegionStatus == 1) {
if (player.highestRegion() == ScriptSetting.HighestRegion) {
TradingCenter.HeadOfficeShop.protectedOnclick()
} else {
ScriptSetting.HighestRegion = player.highestRegion();
TradingCenter.getHeadOffice()
TradingCenter.HeadOfficeShop.protectedOnclick()
}
}
}